// P2589 write by cn_ryh